﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Configuration;
using Microsoft.ApplicationBlocks.Data;
using Entities;

namespace DAL
{
    public class SubCategoriaDAL
    {
        static string strCadenaConexion = System.Configuration.ConfigurationManager.ConnectionStrings["ConexionBaseDesarrollo"].ConnectionString;

        public static long Nuevo(SubCategoria parSubCategoria)
        {
            long longRetorno = 0;
            try
            {
                long.Parse(SqlHelper.ExecuteScalar(strCadenaConexion, "spSubCategoriaNuevo", parSubCategoria.Nombre, parSubCategoria.Categoria.IDCategoria, parSubCategoria.Descripcion).ToString());
                return longRetorno;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static void Modificar(SubCategoria parSubCategoria)
        {
            try
            {
                SqlHelper.ExecuteNonQuery(strCadenaConexion, "spSubCategoriaModificar", parSubCategoria.IDSubCategoria, parSubCategoria.Nombre, parSubCategoria.Categoria.IDCategoria,parSubCategoria.Descripcion);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static void Eliminar(long parIDSubCategoria)
        {
            try
            {
                SqlHelper.ExecuteNonQuery(strCadenaConexion, "spSubCategoriaEliminar", parIDSubCategoria);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static SubCategoria ObtenerUno(long parSubIDCategoria)
        {
            try
            {
                SubCategoria oSubCategoria = new SubCategoria();
                DataTable dt = new DataTable();

                dt = SqlHelper.ExecuteDataset(strCadenaConexion, "spSubCategoriaObtenerUno", parSubIDCategoria).Tables[0];
                if (dt.Rows.Count > 0)
                {
                    oSubCategoria.IDSubCategoria = long.Parse(dt.Rows[0]["IDSubCategoria"].ToString());
                    oSubCategoria.Nombre = dt.Rows[0]["Nombre"].ToString();
                    oSubCategoria.Categoria = Categoria.ObtenerUno(long.Parse(dt.Rows[0]["IDCategoria"].ToString()));
                    oSubCategoria.Descripcion = dt.Rows[0]["Descripcion"].ToString();
                }
                return oSubCategoria;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static List<SubCategoria> ObtenerTodos()
        {
            try
            {
                List<SubCategoria> ListaSubCategorias = new List<SubCategoria>();
                DataTable dt = new DataTable();
                dt = SqlHelper.ExecuteDataset(strCadenaConexion, "spSubCategoriaObtenerTodos").Tables[0];
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        SubCategoria oSubCategoria = new SubCategoria();
                        oSubCategoria.IDSubCategoria = long.Parse(dr["IDSubCategoria"].ToString());
                        oSubCategoria.Nombre = dr["Nombre"].ToString();
                        oSubCategoria.Categoria = Categoria.ObtenerUno(long.Parse(dr["IDCategoria"].ToString()));
                        oSubCategoria.Descripcion = dr["Descripcion"].ToString();
                        ListaSubCategorias.Add(oSubCategoria);
                    }
                }
                return ListaSubCategorias;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static List<SubCategoria> ObtenerVariosPorCategoria(long parIDCategoria)
        {
            try
            {
                List<SubCategoria> ListaSubCategorias = new List<SubCategoria>();
                DataTable dt = new DataTable();
                dt = SqlHelper.ExecuteDataset(strCadenaConexion, "spSubCategoriaObtenerVariosPorCategoria", parIDCategoria).Tables[0];
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        SubCategoria oSubCategoria = new SubCategoria();
                        oSubCategoria.IDSubCategoria = long.Parse(dr["IDSubCategoria"].ToString());
                        oSubCategoria.Nombre = dr["Nombre"].ToString();
                        oSubCategoria.Descripcion = dr["Descripcion"].ToString();
                        oSubCategoria.Categoria = Categoria.ObtenerUno(long.Parse(dr["IDCategoria"].ToString()));
                        ListaSubCategorias.Add(oSubCategoria);
                    }
                }
                return ListaSubCategorias;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
